package com.cloudbroker.bcs.platform.ltb.bizapi.t2service.business;

import com.cloudbroker.bcs.common.entity.HSBCPSBackVO;
import com.cloudbroker.bcs.platform.ltb.bizapi.constants.IFSFunctionIds;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.base.vo.UserVO;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.user.back.*;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.user.vo.*;
import com.hundsun.jresplus.remoting.impl.annotation.Service;
import com.hundsun.jresplus.remoting.impl.annotation.ServiceModule;
import com.hundsun.jresplus.remoting.impl.annotation.ServiceParam;

/**
 * Created by tianrui on 2016/7/8.
 */

@ServiceModule
public interface UserT2BizService {

    /**
     * 短信验证码发送
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_SMS_CODE_SEND, desc = "短信验证码发送")
    SendSMSBack funcSMSCodeSend(@ServiceParam("param") SendSMSForm form);


    /**
     * 用户登录
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_USER_LONGIN, desc = "跟投用户登录")
    UserLoginBack funcUserLogin(@ServiceParam("param") UserLoginForm form);

    /**
     * 用户密码重置
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_PASSWORD_REST, desc = "跟投用户密码修改")
    public HSBCPSBackVO funcUserPasswordRest(@ServiceParam("param") UserPasswordRestForm form);


    /**
     * 用户登出
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_USER_LONGOUT, desc = "用户登出")
    public HSBCPSBackVO funcUserLogOut(@ServiceParam("param") UserLogoutForm form);

    /**
     * 用户密码修改
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_PASSWORD_UPDATE, desc = "用户密码修改")
    public HSBCPSBackVO funcUserPasswordUpdate(@ServiceParam("param") UserPasswordUpdateForm form);

    /**
     * 用户昵称修改
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_USER_ALIASNAME_UPDATE, desc = "用户昵称修改")
    public HSBCPSBackVO funcUserAliasNameUpdate(@ServiceParam("param") UserAliasNameForm form);

    /**
     * 用户头像修改
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_USER_HEADPIC_UPDATE, desc = "用户头像修改")
    public HSBCPSBackVO funcUserHeadpicUpdate(@ServiceParam("param") UserAvatarForm form);

    /**
     * 用户个人信息获取
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_USER_INFOMATION_QUERY, desc = "用户个人信息获取")
    public UserInfoBack funcUserInfoQuery(@ServiceParam("param") UserInfoQryForm form);

    /**
     * 游客身份登录
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_VISITOR_LOGIN, desc = "游客身份登录")
    public UserLoginBack funcVisitorLogin(@ServiceParam("param") VisitorLoginForm form);


    /**
     * 用户登录
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_LOGIN_AUTHORIZATION, desc = "第三方登录")
    UserLoginBack funcLoginAthorization(@ServiceParam("param") LoginAuthorizationForm form);

    /**
     * 其它云纪账户登录
     * */
    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_REDIRECT_LOGIN, desc = "其它云纪账户登录")
    UserLoginBack redirectLogin(@ServiceParam("param") RedirectLoginForm form);


    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_LOGIN_XINAN, desc = "西南账户登录")
    public UserLoginBack funcXiNanLogin(@ServiceParam("param") XiNanUserLoginForm form);

    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_GET_INVIT_INFO, desc = "用户邀请码信息获取")
    public InviteInfoBack func_get_invite_info(@ServiceParam("param")InviteinfoForm form);


    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_USER_OPEN_APP, desc = "用户打开APP")
    public HSBCPSBackVO func_user_open_app(@ServiceParam("param")UserOpenAppForm form);


    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_USER_BASIC_INFO_LIST, desc = "获取多个用户基本信息")
    UserBasicInfoList funcUserBasicInfoListQry(UserBasicInfoListQryForm form);


    @Service(functionId = IFSFunctionIds.IFSLTBUserCenterFunIds.FUNC_RONGYUN_TOKEN, desc = "获取融云token")
    public RongYunTokenBack funcRongyunToken(@ServiceParam("param") RongYunTokenQueryForm form);
}
